home *** CD-ROM | disk | FTP | other *** search
/ Hardcore Visual Basic 5.0 (2nd Edition) / Hardcore Visual Basic 5.0 - Second Edition (1997)(Microsoft Press).iso / Code / Goodies / CallBack / ResNames.CLS < prev    next >
Text File  |  1997-06-09  |  2KB  |  61 lines

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4. END
  5. Attribute VB_Name = "ResourceEnumerator"
  6. Attribute VB_GlobalNameSpace = False
  7. Attribute VB_Creatable = False
  8. Attribute VB_PredeclaredId = False
  9. Attribute VB_Exposed = False
  10. Option Explicit
  11.  
  12. Private Declare Function EnumResourceNames Lib "kernel32" Alias "EnumResourceNamesA" (ByVal hModule As Long, lpType As Any, ByVal lpEnumFunc As Long, LParam As ListBox) As Long
  13. Private Declare Function lstrlenOfLPSTR Lib "kernel32" Alias "lstrlenA" (ByVal lpString As Long) As Long
  14. Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
  15. Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
  16. Private Const RT_CURSOR = 1&
  17. Private Const RT_BITMAP = 2&
  18. Private Const RT_ICON = 3&
  19. Private Const RT_MENU = 4&
  20. Private Const RT_DIALOG = 5&
  21. Private Const RT_STRING = 6&
  22. Private Const RT_FONTDIR = 7&
  23. Private Const RT_FONT = 8&
  24. Private Const RT_ACCELERATOR = 9&
  25. Private Const RT_RCDATA = 10&
  26.  
  27. Private m_CallBack As CallBack
  28.  
  29. Public Function EnumResNameProc(ByVal hModule As Long, ByVal lpszType As Long, ByVal lpszName As Long, LParam As ListBox) As Long
  30. Dim iLen As Long
  31. Dim strTmp As String
  32.     iLen = lstrlenOfLPSTR(lpszName)
  33.     If iLen Then
  34.         strTmp = String$(iLen, 0)
  35.         CopyMemory ByVal strTmp, ByVal lpszName, iLen
  36.         LParam.AddItem strTmp
  37.     Else
  38.         LParam.AddItem lpszName
  39.     End If
  40.     EnumResNameProc = 1
  41. End Function
  42.  
  43. Public Sub FillListWithStringIds(DllName As String, LB As ListBox)
  44. Dim hModule As Long
  45. Dim ResType As Long
  46.     hModule = LoadLibrary(DllName)
  47.     If hModule Then
  48.         LB.Clear
  49.         ResType = RT_STRING
  50.         EnumResourceNames hModule, ByVal ResType, m_CallBack.ProcAddress, LB
  51.         FreeLibrary hModule
  52.     Else
  53.         Beep
  54.     End If
  55. End Sub
  56.  
  57. Private Sub Class_Initialize()
  58.     Set m_CallBack = NewCallBack(CBType_ENUMRESNAMEPROC, Me, True)
  59. End Sub
  60.  
  61.